<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>

    <button class="del">删除</button>
    <button class="info">信息</button>

    <script>

        // class Demo {
        //     constructor(str) {
        //         this.str = str ;
        //         this.addDiv()
        //         this.init()
        //     }

        //     addDiv() {
        //         this.oDiv = document.createElement('div') ;
        //         document.body.appendChild(this.oDiv);
        //     }
        //     init() {
        //         this.oDiv.innerHTML = this.str
        //     }
        // }



        // class Demo {
        //     constructor() {
        //         this.addDiv()
        //     }

        //     addDiv() {
        //         this.oDiv = document.createElement('div') ;
        //         document.body.appendChild(this.oDiv);
        //     }
        //     init(str) {
        //         this.oDiv.innerHTML = str
        //     }
        // }


        // // let d = null ;

        // // function fn() {
        // //     if(!d) {
        // //         d = new Demo()
        // //     }
        // //     return d
        // // }


        
        // let d = null ;

        // function fn(str) {
        //     if(!d) {
        //         d = new Demo()
        //     }
        //     d.init(str)
        //     return d
        // }



        const demo = (function() {
            class Demo {
                constructor() {
                    this.addDiv()
                }

                addDiv() {
                    this.oDiv = document.createElement('div') ;
                    document.body.appendChild(this.oDiv);
                }
                init(str) {
                    this.oDiv.innerHTML = str
                }
            }

            let d = null ;

            return function(...arr) {
                if(!d) {
                    d = new Demo()
                }
                // 每次调用函数  init方法都会被调用
                d.init(...arr)
                return d
            }
        })()


        const oDel = document.querySelector('.del') ;

        oDel.onclick = function() {
            const res1 = demo('删除') ;
        }

        const oInfo = document.querySelector('.info') ;

        oInfo.onclick = function() {
            const res1 = demo('信息') ;
        }


    </script>
    
</body>
</html>